package com.yunke.vo.vip;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * VIP等级VO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(description = "VIP等级信息")
public class YunkeVipLevelVo {

    /**
     * 等级ID
     */
    @Schema(description = "等级ID")
    private Long levelId;

    /**
     * 等级编号
     */
    @Schema(description = "等级编号")
    private String levelCode;

    /**
     * 等级名称
     */
    @Schema(description = "等级名称")
    private String levelName;

    /**
     * 等级级别
     */
    @Schema(description = "等级级别")
    private Integer levelRank;

    /**
     * 等级图标
     */
    @Schema(description = "等级图标")
    private String levelIcon;

    /**
     * 等级颜色
     */
    @Schema(description = "等级颜色")
    private String levelColor;

    /**
     * 月费价格
     */
    @Schema(description = "月费价格")
    private BigDecimal monthPrice;

    /**
     * 季费价格
     */
    @Schema(description = "季费价格")
    private BigDecimal quarterPrice;

    /**
     * 年费价格
     */
    @Schema(description = "年费价格")
    private BigDecimal yearPrice;

    /**
     * 等级描述
     */
    @Schema(description = "等级描述")
    private String description;

    /**
     * 权益列表
     */
    @Schema(description = "权益列表")
    private List<VipPrivilege> privileges;

    /**
     * 专属标识
     */
    @Schema(description = "专属标识")
    private String exclusiveTag;

    /**
     * 是否推荐
     */
    @Schema(description = "是否推荐")
    private Boolean isRecommend;

    /**
     * 是否限时
     */
    @Schema(description = "是否限时")
    private Boolean isLimited;

    /**
     * 限时信息
     */
    @Schema(description = "限时信息")
    private String limitInfo;

    /**
     * 折扣信息
     */
    @Schema(description = "折扣信息")
    private String discountInfo;

    /**
     * 状态文本
     */
    @Schema(description = "状态文本")
    private String statusText;

    /**
     * 最优惠价格
     */
    @Schema(description = "最优惠价格")
    private BigDecimal bestPrice;

    /**
     * 最优惠类型
     */
    @Schema(description = "最优惠类型")
    private String bestPriceType;

    /**
     * 节省金额
     */
    @Schema(description = "节省金额")
    private BigDecimal savedAmount;

    /**
     * VIP权益
     */
    @Data
    @Schema(description = "VIP权益")
    public static class VipPrivilege {
        @Schema(description = "权益名称")
        private String name;

        @Schema(description = "权益描述")
        private String description;

        @Schema(description = "权益图标")
        private String icon;

        @Schema(description = "是否启用")
        private Boolean enabled;
    }
} 